/* ==================================================================   
 * Created [2009-4-27 下午11:32:55] by Jon.King 
 * ==================================================================  
 * TSS 
 * ================================================================== 
 * mailTo:jinpujun@hotmail.com
 * Copyright (c) Jon.King, 2009-2012 
 * ================================================================== 
*/

package com.jinhe.tss.core.cachepool.extend.assignment;

import com.jinhe.tss.core.cachepool.Cacheable;
import com.jinhe.tss.core.cachepool.IArithmetic;
import com.jinhe.tss.core.cachepool.TimeWrapper;

/**
 * <p>
 * AssignmentPoolArithmetic.java
 * </p>
 * 
 * 任务载体池算法器
 * 
 * @author Jon.King 2007-1-3
 */
public abstract class AssignmentPoolArithmetic implements IArithmetic {
    
    public Cacheable create(Long cycleLife) {
        IAssignment assign = AssignmentFactory.getInstance().create(getAssignmentClass());
        return new TimeWrapper(TimeWrapper.createRandomKey("Task"), assign, cycleLife);
    }

    public boolean isValid(Cacheable o) {
        return o != null && o.getValue() instanceof IAssignment;
    }

    public void destroy(Cacheable o) {
        o = null;
    }
    
    protected abstract String getAssignmentClass();
}
